This disclosure relates in general to high-assurance processing and, but not by way of limitation, to redundant circuits used in cryptographic processing.
Some cryptosystems today use microprocessors. Often redundancy is used to assure proper operation of the cryptosystem. Microprocessors may be implemented redundantly. To assure they operate in synchronization, the microprocessors may be run in lock-step fashion such that they perform their execution in unison. Should one processor vary its operation from the other, a comparison function would find the problem.
Under many circumstances, the same processors working in unison will eventually drift apart. Power conservation circuits can throttle-back sub-circuits to save power and/or prevent overheating. Interrupts can often be received asynchronously. Out-of-order execution can also cause unpredictability in the processing flow of microprocessors. These and other factors make some microprocessor designs unsuitable for lock-step operation.
Lock-step designs require circuits that match very closely to prevent one from getting out of synchronization with another. Synchronizers are used to align events that occur at different times. Where circuits cannot be matched or are changed during repair, the lock-step design may no longer operate in synchronization.
For lock-step operation, the software on all mirrored microprocessors must execute together, which requires the same software execution on the microprocessors. Some software tasks are appropriate for lock-step operation, while others do not require that level of harmonization. Redundant execution of all software wastes resources on routines that have no need for harmonization.